home *** CD-ROM | disk | FTP | other *** search
- section lame,code_c
-
- DATA=$30000
- ;PLANE $66000-$79000
-
- >EXTERN"DF0:BIGFNT",DATA
-
- Trap_vec0 = $80
- Execbase = $4
- Oldopen = -$198
- Intenar = $01c
- Intena = $09a
- Dmaconr = $002
- Dmacon = $096
- Cop1lch = $080
- Copjmp1 = $088
- Vposr = $004
-
- Move.l #Start,$80.w ; Trap vector 0
- Trap #0 ; Execute trap 0 to give full control of the
- Rts ; 68000, needs an RTE to return.
-
- Start:
- bsr KillSys
- bsr main
- bsr setupsys
-
- Rte ; Return from exception
-
-
- *****************************************************************************
- ;Killsys - Disable operating system and interrupts
- *****************************************************************************
- Killsys:
- Move.l $4.w,a6 ; Execbase vector
- Lea Gfxname(pc),a1 ; Pointer to "graphics.library" into a1
- Jsr Oldopen(a6) ; Open this library
- Lea $dff000,a6 ; Pointer to custom chips
- Move.l d0,a0 ; Address of the graphics library
- Move.l 38(a0),Sys_copl ; Remember the System copperlist
- Move Intenar(a6),Int_set ; System interrupts
- Move #$7fff,Intena(a6) ; Now switch off all interrupts
- Move.l $6c.w,Vbl_vec ; System vertical blanking int.
- Move Dmaconr(a6),Dma_set ; System DMA
- Move #$7fff,Dmacon(a6) ; Clear all DMA
- Move #$87c0,Dmacon(a6) ; Now set the required DMA channels
-
- Move.l #COP,Cop1lch(a6) ; Init. our own copperlist
- Clr Copjmp1(a6)
-
- Rts
-
- Gfxname: Dc.b "graphics.library",0
- Even
- *****************************************************************************
- ;Sysreturn - Re-enable operating system and interrupts
- *****************************************************************************
- Setupsys:
- Lea $dff000,a6
- Move #$7fff,Intena(a6) ; Clear all interrupts
- Move.l Vbl_vec,$6c.w ; Restore VBL interrupt
- Move Int_set,d0
- Or #$c000,d0
- Move d0,Intena(a6) ; Restore system interrupts
- Move #$7fff,Dmacon(a6)
- Move Dma_set,d0
- Or #$8200,d0
- Move d0,Dmacon(a6) ; Restore system DMA
- Move.l Sys_copl,Cop1lch(a6) ; Restore system copperlist
- Clr Copjmp1(a6)
- Rts
-
- Vbl_vec: dc.l 0
- Int_set: dc.l 0
- Dma_set: dc.l 0
- Sys_copl: dc.l 0
-
-
-
- MAIN:
- LEA $00066000,A1
- MOVE.W #$4AC4,D0
- lbC1A: CLR.L (A1)+
- DBRA D0,lbC1A
- LEA DATA,A0 ;INVERS
- MOVE.W #$016F,D0
- lbC2A: NOT.W (A0)+
- DBRA D0,lbC2A
-
- LEA $00DFF000,A6
-
-
- ROUT: Move.l Vposr(a6),d0
- And.l #$1ff00,d0
- Cmp.l #$00100,d0 ; Wait for vertical position 1
- Bne.s ROUT
-
- BSR FIAT
-
-
-
- ROUT2: Move.l Vposr(a6),d0
- And.l #$1ff00,d0
- Cmp.l #$0F100,d0 ; Wait for vertical position 1
- Bne.s ROUT2
-
- ; ROUTINE ;
-
-
- Btst #6,$bfe001 ; Check the left mouse button
- Bne.s ROUT
-
- RTS
-
-
-
- FIAT: SUB.W #$0066,ZHLER5C ;speed
- BPL.L NOTJET
-
- ADD.W #$00FF,ZHLER5C
-
- MOVE.L #$09F00000,$0040(A6)
- MOVE.L #$FFFFFFFF,$0044(A6)
- MOVE.L #$00000056,$0064(A6)
- MOVE.L POINTER(PC),A0
- MOVE.L #$00066000,D1 ;PLANE
- MOVE.W PLANE(PC),D1
- MOVEQ #$10,D0
- lbCA0: MOVEQ #0,D2
- MOVE.B (A0),D2
- ASL.W #5,D2
- ADD.L #DATA,D2
- MOVE.L D2,$0050(A6)
- MOVE.L D1,$0054(A6)
- MOVE.W #$0401,$0058(A6)
- ADD.W #$002C,D1
- MOVE.L D2,$0050(A6)
- MOVE.L D1,$0054(A6)
- MOVE.W #$0401,$0058(A6)
- ADD.W #$0554,D1
- ADD.W #$0011,A0
- DBRA D0,lbCA0
- ADDQ.W #2,PLANE
- CMP.W #$602C,PLANE ;PLANE&$FFFF
- BNE.S lbC100
- MOVE.W #$6000,PLANE ;PLANE&$FFFF
- lbC100: ADDQ.W #1,POINTER+2
- SUBQ.B #1,ZHLER5E
- BNE lbC1E2
- lbC110: MOVE.L TEXTPOINTER(PC),A0
- ADDQ.W #1,A0
- MOVE.B (A0),D1
- BNE.S lbC124
- LEA TEXT(PC),A0
- MOVE.B (A0),D1
- lbC124: MOVE.L A0,TEXTPOINTER
- MOVE.B #$11,ZHLER5E
-
- lbC1B6: CMP.B #$20,D1
- BNE.S lbC1C4
- MOVE.B #10,ZHLER5E
- lbC1C4: LEA ABC(PC),A0
- MOVEQ #0,D2
- lbC1CC: ADDQ.W #1,D2
- CMP.B (A0)+,D1
- BNE.S lbC1CC
- MULU #$121,D2
- ADD.L #DATA+$1FF,D2
- MOVE.L D2,POINTER
- NOTJET:
- lbC1E2: MOVE.W ZHLER5C(PC),SET
- RTS
-
-
-
- ZHLER5C: DC.W $00ff
- ZHLER5E: DC.W $0101
- POINTER: DC.L data+$1ff+[$121*28] ;SPACE
- TEXTPOINTER: DC.L TEXT
- TEXT: DC.B "*!abcdefghijklmnopqrstuvwxyz",0
- EVEN
- ABC: DC.B "abcdefghijklmnopqrstuvwxyz 128!/.:,*%<>",0
-
- COP:
- DC.W $008E,$2081,$0090,$2EC1,$0092,$0028
- DC.W $0094,$00D0,$0096,$87F0,$0096,$0020
- DC.W $00E0,$0006,$00E2
- PLANE: DC.W $6000
- DC.W $0108,$002C,$010A,$002C,$0102
- SET: DC.W $0090
- DC.W $0100,$1200
- DC.W $0180,$0000,$0182,$0F00
- DC.W $FFFF,$FFFE
-
-